package com.supertange.miniapp.wepet.modules.wepet.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supertange.miniapp.wepet.modules.wepet.entity.UsersEntity;
import com.supertange.miniapp.wepet.modules.wepet.entity.UsersReport;
import com.supertange.miniapp.wepet.modules.wepet.entity.vo.CommentsVO;
import com.supertange.miniapp.wepet.modules.wepet.entity.vo.UsersFansVO;
import com.supertange.miniapp.wepet.modules.wepet.entity.vo.UsersInfoVO;

import java.util.List;

public interface UserService {

    /**
     * @Description: 判断用户名是否存在
     */
    boolean queryUsernameIsExist(String username);

    /**
     * @Description 判断昵称是否存在
     */

    boolean queryNicknameIsExist(String nickname);

    /**
     * @Description: 保存用户(用户注册)
     */
    void saveUser(UsersEntity user);

    /**
     * @Description: 用户登录，根据用户名和密码查询用户
     */
    UsersEntity queryUserForLogin(String username, String password);

    /**
     * @Description: 查询用户信息
     */
    UsersEntity queryUserInfo(String userId);

    /**
     * @Description: 查询用户是否喜欢点赞视频
     */
    boolean isUserLikeVideo(String userId, String videoId);

    /**
     * @Description: 增加用户和粉丝的关系
     */
    void saveUserFanRelation(String userId, String fanId);

    /**
     * @Description: 删除用户和粉丝的关系
     */
    void deleteUserFanRelation(String userId, String fanId);

    /**
     * @Description: 查询用户是否关注
     */
    boolean queryIfFollow(String userId, String fanId);

    /**
     * @Description: 举报用户
     */
    void reportUser(UsersReport userReport);

    /**
     * @Description: 存储个人信息
     */
    int updateUserInfo(UsersInfoVO users);

    /**
     * @Description: 通过openid查询用户
     */
    UsersEntity queryNicknameByOpenId(String openId);

    /**
     * 获取自己所有评论
     */
    List<CommentsVO> getAllComments(String userId, Page page);

    /**
     * 是否有该用户微信存在
     * @param code
     * @return
     */
    UsersEntity queryOpenidIsExist(String code);

    /**
     * 查询用户粉丝情况
     * @param userId
     */
    List<UsersFansVO> queryMyFans(String userId,Page page);

    /**
     * 获取用户关注
     * @param userId
     * @param page
     * @return
     */
    List<UsersFansVO> queryMyFollow(String userId,Page page);

}
